/**************************************************************************
**
** Copyright (C) 2011 Frank Büttner <frank-buettner@gmx.net>
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program.  If not, see <http://www.gnu.org/licenses/>.
**
**************************************************************************/


#include "Modulliste.h"
#include "Modulbasis.h"

Modulliste::Modulliste(QObject *eltern):QObject(eltern)
{

}

void Modulliste::neuesModul(Modulbasis *modul)
{
    //Wenn es schon ein Modul, für den Dateiytpe gibt, laden verweigern;
    if(K_Dateifilterliste.contains(modul->Dateien()))
    {
	Q_EMIT Fehler(trUtf8("Für die Dateierweiterung %1 wurde schon ein Modul geladen.").arg(modul->Dateien()));
	return;
    }
    K_Module.append(modul);
    K_Dateifilter.append(modul->Dateien());
    K_Dateifilterliste.insert(modul->Dateien(),modul);
    Q_FOREACH(QString Endung,modul->Dateiendungen())
    {
	K_Dateiendungen.insert(Endung,modul);
    }

}
Modulbasis* Modulliste::ModulSuchen(const QString &dateifilter) const
{
    if (K_Dateifilterliste.contains(dateifilter))
	return K_Dateifilterliste[dateifilter];
    // Eventuell haben wir in der Endungsliste mehr Glück
    if(K_Dateiendungen.contains(dateifilter))
	return K_Dateiendungen[dateifilter];
    return 0;
}
Modulbasis* Modulliste::Modul(const uint id) const
{
    if(id>=(uint)K_Module.size())
	return 0;
    return K_Module[id];
}
